<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!--
    sync：同步
    async：异步
-->

<script>
// 什么情况下会使用promise？
// 一般情况下是有异步操作时，使用Promise对这个异步操作进行分装。promise的作用，就是避免出现回调地狱
//1. new Promise ：构造函数（1.保存一些状态信息，2.执行传入的函数）
// 2.在执行传入的回调函数时，会传入两个参数，resolve和reject。这两参数本身又是函数
//3.执行异步操作：网络请求 ，返回一些data数据
//4.网络请求成功，返回的数据传入resolve函数，调用resolve(data):把data传到专门处理的地方then()里
//4-1.在then()函数里面处理返回的数据
//6.网络请求失败，把错误信息传入到reject里面，调用reject(data)函数:传错误信息给catch()函数处理
//6-1.catch()函数：把传过来的错误信息传入err,处理相关的错误信息

// 模仿回调地狱的例子：
setTimeout(() => {
  console.log('hello world');
  console.log('hello world');
  console.log('hello world');
  console.log('hello world');
  console.log('hello world');
  setTimeout(() => {
    console.log('hello vue');
    console.log('hello vue');
    console.log('hello vue');
    console.log('hello vue');
    console.log('hello vue');
    setTimeout(() => {
      console.log('hello js');
      console.log('hello js');
      console.log('hello js');
      console.log('hello js');
      console.log('hello js');
    },1000)
  },1000)
},1000)

// 使用promise方法写上面的代码：看03-链式调用（一）.html


// promise
new Promise((resolve,reject) => {
  setTimeout((data) => {
    resolve(data)
    reject(data)
  })
},1000).then((data) => {
   // 100行的处理data的代码
}).catch((err) => {
   //处理错误信息
})


//例子：
new Promise((resolve,reject) => {
  setTimeout(() => {
    // resolve('岂不闻烈女怕缠郎')
    reject('error message')
  })
},1000).then((data) => {
  // 100行的处理data的代码
  console.log(data);  //岂不闻烈女怕缠郎
}).catch((err) => {
  console.log(err); //error message
})
</script>

</body>
</html>